package com.desenvolvimento.sistema.venda;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import com.desenvolvimento.sistema.cliente.Cliente;
import com.desenvolvimento.sistema.cliente.ClienteRN;
import com.desenvolvimento.sistema.produto.Produto;
import com.desenvolvimento.sistema.produto.ProdutoRN;

@ManagedBean(name="registroVendas")
@ViewScoped
public class RegistroVendaBean {
	private Cliente clienteSelecionado = new Cliente();
	private Produto produtoSelecionado = new Produto();
	private List<Produto> carrinhoCompras = new ArrayList<Produto>();
	private List<SelectItem> selectItem;
	
	private float valorTotal;
	
	

	public String buscarProduto(){
		ProdutoRN produtoRN = new ProdutoRN();
		Produto produtoPesquisado = new Produto();
		if(produtoSelecionado.getDescricao() != null && !produtoSelecionado.getDescricao().equals("")){
			produtoPesquisado = produtoRN.pesquisarPoDescricao(produtoSelecionado.getDescricao());
			
			if(produtoPesquisado != null){
				this.carrinhoCompras.add(produtoPesquisado);
				calculaTotal();
			}
			
		}
		return null;
	}

	private void calculaTotal() {
		this.valorTotal = 0;
		if(!carrinhoCompras.isEmpty()){
			for (Produto p : this.carrinhoCompras) {
				valorTotal += p.getValor();
			}
		}
		
	}
	
	public String finalizarVenda(){
		if(!this.carrinhoCompras.isEmpty()){
			ArrayList<Venda> vendas = new ArrayList<Venda>();
			if(this.clienteSelecionado != null){
				for (Produto p : this.carrinhoCompras) {
					vendas.add(new Venda(p,this.clienteSelecionado));
				}
				
				for (Venda venda : vendas) {
					VendaRN vendaRN = new VendaRN();
				    venda.setDataVenda(new Date());
					vendaRN.registrarVenda(venda);
				}
			}
		}
		return null;
	}
	
	public String excluirProdutoCarrinho(){
		if(this.carrinhoCompras != null && !this.carrinhoCompras.isEmpty()){
			if(this.produtoSelecionado != null){
				this.carrinhoCompras.remove(this.produtoSelecionado);
				calculaTotal();
			}
		}
		return null;
	}

	public Cliente getClienteSelecionado() {
		return clienteSelecionado;
	}

	public void setClienteSelecionado(Cliente clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}

	public Produto getProdutoSelecionado() {
		return produtoSelecionado;
	}

	public void setProdutoSelecionado(Produto produtoSelecionado) {
		this.produtoSelecionado = produtoSelecionado;
	}

	public List<Produto> getCarrinhoCompras() {
		return carrinhoCompras;
	}

	public void setCarrinhoCompras(List<Produto> carrinhoCompras) {
		this.carrinhoCompras = carrinhoCompras;
	}

	public float getValorTotal() {
		return valorTotal;
	}

	public void setValorTotal(float valorTotal) {
		this.valorTotal = valorTotal;
	}
	
	public List<SelectItem> getSelectItem() {
		if(selectItem == null){
			selectItem = new ArrayList<SelectItem>();
			ClienteRN clienteRN = new ClienteRN();
			List<Cliente> listaClientes = clienteRN.listar();
			
			if(listaClientes != null && !listaClientes.isEmpty()){
				SelectItem item;
				for (Cliente clienteLista : listaClientes) {
					item = new SelectItem(clienteLista, clienteLista.getNome());
					selectItem.add(item);
				}
			}
		}
		return selectItem;
	}
	
}
